﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntityLayer;
using BusinessLayer.Interface;
using BusinessLayer.Facade;

namespace PresentationLayer
{
    public partial class wfrmLegajoListar : System.Web.UI.Page
    {
        private String msg, titulo;
        private clsFacadeLegajoListar FacadeLegajoListar;
        private IEnumerable<Object> listaLegajo = null;
        private List<SGP_LEGAJO> listarLegajo = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["ingresar"] != null)
                    {
                        if (!(Boolean)Session["ingresar"])
                        {
                            msg = Session["msg"].ToString();
                            titulo = Session["titulo"].ToString();
                            Session["ingresar"] = null;
                            MostrarComentario(msg, titulo);
                            return;
                        }
                    }
                    if (Session["grabar"] != null)
                    {
                        if ((Boolean)Session["grabar"])
                        {
                            msg = Session["msg"].ToString();
                            titulo = Session["titulo"].ToString();
                            Session["grabar"] = null;
                            MostrarComentario(msg, titulo);
                        }
                    }
                    ListarLegajos();
                }
            }
            catch (Exception ex)
            {
                titulo = "Page_Load";
                MostrarComentario(ex.Message, titulo);
            }

        }

        private void ListarLegajos()
        {
            try
            {
                listaLegajo = new List<Object>();
                FacadeLegajoListar = new clsFacadeLegajoListar();
                listaLegajo = FacadeLegajoListar.listarLegajos();

                if (listaLegajo == null || listaLegajo.Count() == 0) { return; }

                dgvLegajos.DataSource = listaLegajo;
                dgvLegajos.DataBind();
            }
            catch (Exception ex)
            {
                titulo = "ListarLegajos";
                MostrarComentario(ex.Message, titulo);
            }
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Session["op"] = "N";
            Response.Redirect("wfrmLegajoActualizar.aspx", true);
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            if (!ObtenerDatos()) { return; }
            Session["op"] = "M";
            Response.Redirect("wfrmLegajoActualizar.aspx", true);
        }

        private Boolean ObtenerDatos()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                if (dgvLegajos.FocusedRowIndex == -1)
                {
                    MostrarComentario("Debe seleccionar un Legajo");
                    ok = false;
                }
                if (ok)
                {
                    String cod = String.Empty;
                    cod = dgvLegajos.GetRowValues(dgvLegajos.FocusedRowIndex, "CLEG_LEGAJO").ToString().Trim();
                    Session["cod"] = cod;
                }
            }
            catch (Exception ex)
            {
                ok = false;
                titulo = "ObtenerDatos";
                MostrarComentario(ex.Message, titulo);
            }
            return ok;
        }

        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            lblMensaje.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

        protected void dgvLegajos_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            ListarLegajos();
        }

        protected void dgvLegajos_PageIndexChanged(object sender, EventArgs e)
        {
            ListarLegajos();
        }

        protected void btnAnularAceptar_Click(object sender, EventArgs e)
        {
            Anular();
        }

        private void Anular()
        {
            try
            {
                if (dgvLegajos.VisibleRowCount == 0) { MostrarComentario("No existe legajo seleccionado para su anulación."); return; }
                if (dgvLegajos.FocusedRowIndex == -1) { MostrarComentario("Debe seleccionar un legajo a anular."); return; }
                int index = dgvLegajos.FocusedRowIndex;
                const String codAnul = "0022";
                if (dgvLegajos.GetRowValues(index, "CTAB_ESTLEG").ToString() == codAnul) { MostrarComentario("El Legajo ya se encuentra Anulado."); return; }

                String CLEG_LEGAJO = dgvLegajos.GetRowValues(index, "CLEG_LEGAJO").ToString();

                FacadeLegajoListar = new clsFacadeLegajoListar();
                listarLegajo = new List<SGP_LEGAJO>();
                listarLegajo = FacadeLegajoListar.MostrarLegajo(CLEG_LEGAJO);

                if (listarLegajo == null || listarLegajo.Count() == 0) { MostrarComentario("No exiten datos para el legajo seleccionado."); return; }

                Boolean ok = false;

                SGP_LEGAJO objSGP_Legajo = null;

                foreach (var item in listarLegajo)
                {
                    objSGP_Legajo = new SGP_LEGAJO();
                    objSGP_Legajo.CLEG_LEGAJO = item.CLEG_LEGAJO;
                    objSGP_Legajo.CLEG_MODAPE = item.CLEG_MODAPE;
                    objSGP_Legajo.CDIS_DISJUD = item.CDIS_DISJUD;
                    objSGP_Legajo.CTAB_TIPPRO = item.CTAB_TIPPRO;
                    objSGP_Legajo.DLEG_FECREC = item.DLEG_FECREC;
                    objSGP_Legajo.CLEG_CODENT = item.CLEG_CODENT;
                    objSGP_Legajo.CPRL_NUMEXP = item.CPRL_NUMEXP;
                    objSGP_Legajo.CLEG_CODABO = item.CLEG_CODABO;
                    objSGP_Legajo.CLEG_OBSLEG = item.CLEG_OBSLEG;
                    objSGP_Legajo.DPRL_DOCAUT = item.DPRL_DOCAUT;
                    objSGP_Legajo.CTAB_ESTLEG = item.CTAB_ESTLEG;
                    objSGP_Legajo.DLEG_APELEG = item.DLEG_APELEG;
                    objSGP_Legajo.DLEG_FORADM = item.DLEG_FORADM;
                    objSGP_Legajo.CLEG_UBIGEO = item.CLEG_UBIGEO;
                    objSGP_Legajo.DLEG_FECEST = item.DLEG_FECEST;
                    objSGP_Legajo.CLEG_UBIDEP = item.CLEG_UBIDEP;
                    objSGP_Legajo.CLEG_UBIPRO = item.CLEG_UBIPRO;
                    objSGP_Legajo.CLEG_UBIDIS = item.CLEG_UBIDIS;
                    objSGP_Legajo.CPRL_DOCAUT = item.CPRL_DOCAUT;
                    objSGP_Legajo.CLEG_UNIORG = item.CLEG_UNIORG;
                    objSGP_Legajo.CLEG_TITULO = item.CLEG_TITULO;
                    objSGP_Legajo.NPER_SECPER = item.NPER_SECPER;
                    objSGP_Legajo.CTAB_PROCED = item.CTAB_PROCED;
                    objSGP_Legajo.CTAB_MONTIP = item.CTAB_MONTIP;
                    objSGP_Legajo.NPRL_MONPAG = item.NPRL_MONPAG;
                }

                objSGP_Legajo.CTAB_ESTLEG = codAnul;

                ok = FacadeLegajoListar.ModificarLegajo(objSGP_Legajo);

                if (ok) { MostrarComentario("Legajo Anulado Correctamente."); ListarLegajos(); }
                else { MostrarComentario("Ocurrio un error al anular el legajo."); }

            }
            catch (Exception ex)
            {
                msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                MostrarComentario(msg, "Anular");
            }
        }

    }
}